package info.fqtech.study.createpattern.builder;

/**
 * @author YASSER   作者 E-mail:   450153554@qq.com
 * @date: 2018-12-24 10:41
 * @version: 1.0.0
 * @description: 使用建造者模式进行创建学生对象。
 * 1、对象中创建一个静态的内部对象，并提供一个build方法
 * 2、对象中创建一个静态的内部对象的构造方法
 * 3、创建对象使用，调用内部的静态对象方法build创建
 * 好处是对于创建一个对象需要对多个参数进行灵活赋值是，可以使用。
 * @modified: <文件修改说明>
 */
public class Student {

    private String name;

    private int age;

    private String sex;

    public static class StudentBuilder {

        private String name;

        private int age;

        private String sex;


        public StudentBuilder setName(String name) {
            this.name = name;
            return this;
        }

        public StudentBuilder setAge(int age) {
            this.age = age;
            return this;
        }

        public Student build(){
            return new Student(this);
        }
    }

    public Student(StudentBuilder studentBuilder) {
        this.age = studentBuilder.age;
        this.name = studentBuilder.name;
    }

    public static void main(String[] args) {
        Student student1 = new Student.StudentBuilder().setAge(18).build();
        Student student2 = new Student.StudentBuilder().setAge(18).setName("JACK")
                .build();
    }

}
